#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
long long n,m,j=0,ans=0,nxt[1005],to[1005][35],dp[50005][1005];
string s,t; 
int main()
{
	freopen("neck.in","r",stdin);
	freopen("neck.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>s>>t;
	n=s.size(),m=t.size();
	s=' '+s,t=' '+t;
	for(long long i=2;i<=m;i++)
	{
		while(t[i]!=t[j+1]&&j)
		{
			j=nxt[j];
		}
		if(t[i]==t[j+1])
		{
			j++;
		}
		nxt[i]=j;
	}
	for(long long i=1;i<=m;i++)
	{
		for(long long j=0;j<=25;j++)
		{
			if(t[i]-'a'==j)
			{
				to[i-1][j]=i;
			}
			else
			{
				to[i-1][j]=to[nxt[i-1]][j];
			}
		}
	}
	for(long long i=1;i<=n;i++)
	{
		for(long long j=0;j<=m-1;j++)
		{
			dp[i+1][j]=max(dp[i+1][j],dp[i][j]);
			dp[i+1][to[j][s[i]-'a']]=max(dp[i+1][to[j][s[i]-'a']],dp[i][j]+1);
		}
	}
	for(long long i=0;i<=m-1;i++)
	{
		ans=max(ans,dp[n+1][i]);
	}
	cout<<ans<<endl;
	return 0;
}
